/**
 * 
 */
package com.xpec.c4.service.module.datacenter.player.db;

import java.util.HashMap;

/**
 * 暫存錢包的異動原因
 * 
 * @author TW15010
 */
public enum TmpCashChangeWay {
	// 增加金錢的行為, id 必須大於 0 =============================================

	/** 開分 API */
	ADD_OPEN_SCORE_API(1),

	// 減少金錢的行為, id 必須小於 0 =============================================

	/** 回分 API */
	SUB_RETURN_SCORE_API(-1),

	/** 登入時轉到玩家身上 */
	SUB_TO_PLAYER_ON_LOGIN(-2),

	/** 執行回分 API 時轉到玩家身上 */
	SUB_TO_PLAYER_ON_RETURN_SCORE_API(-3),

	/** 在遊戲中 client 要求轉到玩家身上 */
	SUB_TO_PLAYER_IN_GAME(-4);

	/**
	 * 代表數值
	 */
	private int id;

	/**
	 * id to enum item map
	 */
	private static final HashMap<Integer, TmpCashChangeWay> idToEnumMap = new HashMap<Integer, TmpCashChangeWay>();

	static {
		TmpCashChangeWay[] list = values();
		for (TmpCashChangeWay way : list) {
			idToEnumMap.put(way.getId(), way);
		}
	}

	/**
	 * @param id
	 *            代表數值
	 * @param desc
	 *            說明
	 */
	private TmpCashChangeWay(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	/**
	 * 是否為增加值
	 * 
	 * @return true 是<br>
	 *         false 否
	 */
	public boolean isAdd() {
		return (id > 0);
	}

	/**
	 * 是否為減少值
	 * 
	 * @return true 是<br>
	 *         false 否
	 */
	public boolean isSubtract() {
		return (id < 0);
	}

	public static TmpCashChangeWay getChangeWay(int id) {
		if (idToEnumMap.containsKey(id)) {
			return idToEnumMap.get(id);
		}
		return null;
	}
}
